<!DOCTYPE html><html lang="en"><head><meta charset="utf8"></head><body style="width:80%;margin-left:10%;margin-right:10%;"><div class="cl-preview-section"><h2 id="一、6种遍历方法的对比">一、6种遍历方法的对比</h2>
</div><div class="cl-preview-section"><p>在 Pandas 中，我们既有Series对象又有 DataFrame 对象，还有 DataFrame 数据框中对应的每一个元素。我们可以简单地理解为：</p>
</div><div class="cl-preview-section"><ul>
<li>map 函数作用于 Series 对象</li>
<li>apply 既可以作用于 Series 对象，也可以作用于 DataFrame 整体，但作用的单位要么是一行(row)，要么是一列(columns)。</li>
<li>applymap 作用的是一个 DataFrame 中的每一个元素。</li>
<li>for 不会对数据进行操作，只是遍历查询</li>
</ul>
</div><div class="cl-preview-section"><h2 id="二、for-遍历">二、for 遍历</h2>
</div><div class="cl-preview-section"><p>for 语句是 Python 内置的迭代器工具，用于从可迭代容器对象（如列表、元组、字典、集合、文件等）中逐个读取元素，直到容器中没有更多元素为止，工具和对象之间只要遵循可迭代协议即可进行迭代操作。<br>
具体的迭代的过程：</p>
</div><div class="cl-preview-section"><ul>
<li>可迭代对象通过 <strong>iter</strong> 方法返回迭代器，迭代器具有 <strong>next</strong> 方法。</li>
<li>for循环不断地调用 <strong>next</strong> 方法，每次按序返回迭代器中的一个值。</li>
<li>直到迭代到最后，没有更多元素时抛出异常 StopIteration（python自动处理异常）。</li>
</ul>
</div><div class="cl-preview-section"><p>迭代的优点是无需把所有元素一次加载到内存中，可以在调用 next 方法时逐个返回元素，避免出现内存空间不够的情况。<br>
为了演示的方便，生成一个 DataFrame。代码如下：<br>
<img src="https://img1.sycdn.imooc.com/szimg/659520f1092d846802600200.png" alt="图片描述"><br>
通过 for 循环，迭代出 DataFrame 中的每一列数据。<br>
<img src="https://img1.sycdn.imooc.com/szimg/659520ff0925fb0a02620242.png" alt="图片描述"><br>
运行结果：<br>
<img src="https://img1.sycdn.imooc.com/szimg/65952112099c691a01960517.png" alt="图片描述"></p>
</div><div class="cl-preview-section"><h2 id="三、map遍历">三、map遍历</h2>
</div><div class="cl-preview-section"><p>在日常的数据处理中，map函数的作用是对 Series 对象逐元素的操作。<br>
为了演示的方便，生成一个 DataFrame<br>
<img src="https://img1.sycdn.imooc.com/szimg/6595214b09f399df02570250.png" alt="图片描述"><br>
运行结果：<br>
<img src="https://img1.sycdn.imooc.com/szimg/6595215709eca16403700090.png" alt="图片描述"><br>
对 DataFrame 中的 “E” 列进行操作，DataFrame 中的 “E” 是一个 Series 对象。，代码如下：<br>
<img src="https://img1.sycdn.imooc.com/szimg/659521720903ce2402800302.png" alt="图片描述"><br>
运行结果：<br>
<img src="https://img1.sycdn.imooc.com/szimg/659521c009e9f4fe01200094.png" alt="图片描述"><br>
通过 map 获取 DataFrame 中某一列的值，然后通过 lambda 函数对每个值加 10 操作，生成一列新的数据</p>
</div><div class="cl-preview-section"><h2 id="四、apply遍历">四、apply遍历</h2>
</div><div class="cl-preview-section"><p>apply()  函数的自由度较高，可以直接对 Series 或者 DataFrame 中元素进行逐元素遍历操作。<br>
为了演示的方便，生成一个 DataFrame<br>
<img src="https://img1.sycdn.imooc.com/szimg/6595214b09f399df02570250.png" alt="图片描述"><br>
运行结果：<br>
<img src="https://img1.sycdn.imooc.com/szimg/6595226509fcad2403720111.png" alt="图片描述"><br>
现在想将 DataFrame 中所有的值进行计算，代码如下：<br>
<img src="https://img1.sycdn.imooc.com/szimg/65952276097cb4e104100296.png" alt="图片描述"><br>
运行结果：<br>
<img src="https://img1.sycdn.imooc.com/szimg/6595229009f271ff01210089.png" alt="图片描述"></p>
</div></body></html>